package com.huadu.hdoj.judge.codesandbox;

import com.huadu.hdoj.judge.codesandbox.model.ExecuteCodeRequest;
import com.huadu.hdoj.judge.codesandbox.model.ExecuteCodeResponse;
import lombok.extern.slf4j.Slf4j;

@Slf4j
public class CodeSandboxProxy implements CodeSandbox {

    private final CodeSandbox codeSandbox;
    public CodeSandboxProxy(CodeSandbox codeSandbox) {
        this.codeSandbox = codeSandbox;
    }

    @Override
    public ExecuteCodeResponse executeCode(ExecuteCodeRequest executeCodeRequest) {
        log.info("代码沙箱的请求信息：" + executeCodeRequest.toString());
        ExecuteCodeResponse executeCodeResponse = codeSandbox.executeCode(executeCodeRequest);
        log.info("代码沙箱的响应信息：" + executeCodeResponse.toString());
        return executeCodeResponse;
    }
}
//  这段代码定义了一个代理模式的实现类 CodeSandboxProxy，用于对 CodeSandbox 接口的功能进行增强。简单来说就是日志记录。
//  代理模式：在不修改原始类的情况下，增强其功能。虽说只是加了一个日志，但好歹是一个设计模式